<?php

namespace app\admin\model;

use think\facade\Db;
use think\Model;


/**
 * 通知管理的数据模型
 * 
 * 时间 ： 2020年4月28日15:55:06
 * 作者 ： 夏立军
 */
class Notice extends Model
{

    /**
     * 添加一条资讯数据
     * 
     * @param $title 标题
     * @param $content 内容
     * @param $information_source
     * @param $is_top 是否置顶
     * @param $display 是否显示
     * @param $image_files 图片组
     * @param $aid 创建人
     * @return 是否插入成功
     */
    public function add_notice(string $title, string $content,string $author,string $information_source,string $release_date ,int $is_top, int $display, int $aid,string $image_files): ?bool
    {
        try {
            $data['title'] = $title;
            $data['content'] = $content;
            $data['author'] = $author;
            $data['information_source'] = $information_source;
            $data['release_date'] = $release_date;
            $data['is_top'] = $is_top;
            $data['display'] = $display;
            $data['image_files'] = $image_files;
            $data['aid'] = $aid;
            $data['update_time'] = time();
            $data['create_time'] = time();

            Db::name('notice')->save($data);
        } catch (\Throwable $th) {
            return false;
        }
        return true;
    }

    /**
     * 获取分页的资讯数据
     * @return 获取到的数量
     */
    public function notice_all_count(): ?int
    {
        return Db::name('notice')->count();
    }

    /**
     * 资讯通知列表 分页显示
     * 
     * @param $offset 获取数据的开始位置
     * @param $size   获取数据的条数
     * @return 获取到的所有项目
     */
    public function notice_list(int $offset, int $size = 10)
    {
        return Db::name('notice')->alias('a')
            ->join(['ams_admin' => 'b'], 'a.aid=b.id')
            ->order('id','desc')
            ->field('a.*,b.name as admin_name')
            ->limit($offset, $size)->select();
    }

    /**
     * 通过ID 获取一条资讯信息
     * 
     * @param id 资讯ID
     * @return 资讯信息
     */
    public function get_notice_data_by_id(int $id)
    {
        return Db::name('notice')->where('id', $id)->find();
    }

    /**
     * 修改数据
     * 
     * @param id 要修改的ID
     * @param $data 要修改的数据
     * @return 修改后的结果
     */
    public function update_notice_data_by_id_and_data(int $id, array $data)
    {
        try {
            Db::name('notice')->where('id', $id)->save($data);
        } catch (\Throwable $th) {
            return false;
        }
        return true;
    }

    /**
     * 通过ID删除一条资讯信息
     *  
     * @param $id 资讯ID
     * @return 删除后的结果
     */
    public function del_notice_info_by_id(int $id){
        try {
            Db::name('notice')->where('id',$id)->delete();
        } catch (\Throwable $th) {
            return false;
        }
        return true;
    }

    /**
     * 获取所有的通知资讯
     * 
     * @return 所有的文章分类
     */
    public function get_notice_all_info(){
        return Db::name('notice')->select();
    }

    /**
     * 获取已启用的通知资讯
     * 
     * @return 已启用的文章分类
     */
    public function get_display_notice_info(){
        return Db::name('notice')->where('display',1)->select();
    }
}
